#include "log.h"

std::string leveltostring(int level)
{
    switch(level)
    {
        case 0: return "Info";
        case 1: return "Debug"; 
        case 2: return "Warning"; 
        case 3: return "Error";
        case 4: return "Fatal";
    }
}

int logmassage(int level, const char *format, ...)
{
    if(level < 0 && level > 4) return -1;
    //日志：默认部分 + 用户自定义部分
    //默认部分: 等级 + 日志时间 
    char leftbuffer[SIZE];
    time_t t = time(nullptr);
    struct tm* tm = localtime(&t);
    snprintf(leftbuffer, sizeof(leftbuffer), "[%s][%d-%d-%d %d:%d:%d]", \
        leveltostring(level).c_str(), 
        tm->tm_year, tm->tm_mon, tm->tm_mday, 
        tm->tm_hour, tm->tm_min, tm->tm_sec); // 使用反斜杠\可以对分行语句进行连接

    //用户部分
    char rightbuffer[SIZE];
    va_list s;
    va_start(s, format); //给s初始化，指向当前位置的下一个位置
    vsnprintf(rightbuffer, sizeof(rightbuffer), "%s", s);

    //打印日志
    printf("%s %s", leftbuffer, rightbuffer);

    return 1;
}

int main()
{
    int n = logmassage(Info, "%s", "Hello Linux!!!\n");
    if(n < 0)
    {
        printf("log error!\n");
    }

    return 0;
}
